<template>
  <div class="search-panel">
    <el-row class="m-header-searchbar">
      <el-col
        :span="3"
        class="left"
      >
        <img
          src="//s0.meituan.net/bs/fe-web-meituan/e5eeaef/img/logo.png"
          alt="美团"
        >
      </el-col>
      <el-col
        :span="15"
        class="center"
      >
        <div class="wrapper">
          <el-input
            v-model="search"
            placeholder="搜索商家或地点"
            @focus="focus"
            @blur="blur"
            @input="input"
          />
          <button class="el-button el-button--primary"><i class="el-icon-search" /></button>
          <dl
            v-if="isHotPlace"
            class="hotPlace"
          >
            <dt>热门搜索</dt>
            <dd
              v-for="(item,idx) in $store.state.home.hotPlace.slice(0,5)"
              :key="idx"
            >
              <a href="#">{{ item.name }}</a>
            </dd>
          </dl>
          <dl
            v-if="isSearchList"
            class="searchList"
          >
            <dd
              v-for="(item,idx) in searchList"
              :key="idx"
            >
              <a href="#">{{ item.name }}</a>
            </dd>
          </dl>
        </div>
        <p class="suggest">
          <a
            v-for="(item,idx) in $store.state.home.hotPlace"
            :key="idx"
            href="#"
          >{{ item.name }}</a>
        </p>
        <ul class="nav">
          <li>
            <nuxt-link
              to="/"
              class="takeout"
            >美团外卖</nuxt-link>
          </li>
          <li>
            <nuxt-link
              to="/"
              class="movie"
            >猫眼电影</nuxt-link>
          </li>
          <li>
            <nuxt-link
              to="/"
              class="hotel"
            >美团酒店</nuxt-link>
          </li>
          <li>
            <nuxt-link
              to="/"
              class="apartment"
            >民宿/公寓</nuxt-link>
          </li>
          <li>
            <nuxt-link
              to="/"
              class="business"
            >商家入驻</nuxt-link>
          </li>
        </ul>
      </el-col>
      <el-col
        :span="6"
        class="right"
      >
        <ul class="security">
          <li><i class="refund" />
            <p class="txt">随时退</p>
          </li>
          <li><i class="single" />
            <p class="txt">不满意免单</p>
          </li>
          <li><i class="overdue" />
            <p class="txt">过期退</p>
          </li>
        </ul>
      </el-col>
    </el-row>
  </div>
</template>

<script>
import _ from 'lodash'
export default {
  data() {
    return {
      isFocus: false, //是否是聚焦状态
      search: '', //当前输入框的值
      hotPlace: ['火锅'],
      searchList: [],
      recommend: ['中国', '西安', '华扬联众']
    }
  },
  computed: {
    isHotPlace() {
      //想让热门推荐显示出来   1.input聚焦状态  2.input值为空
      return this.isFocus && !this.search
    },
    isSearchList() {
      //input对应搜素内容展示出来 1.input聚焦  2.input存在值
      return this.isFocus && this.search
    }
  },
  methods: {
    focus() {
      this.isFocus = true
    },
    blur() {
      //这里应该解决bug
      //当点击的input下方的推荐的时候。效果应该是先跳转在消失。
      //这里直接失去焦点，是点不到下方的nuxt-link的。所以在失去焦点的时候加一个肉眼
      //看不到的延时器，这样就可以先跳转而后消失
      let self = this
      setTimeout(() => {
        this.isFocus = false
      }, 150)
    },
    //这个debounce 就相当于我们加了一个定时器 然后每次input快速触发的时候在删除上一次定时器
    //这里做了一个lodash的一个去抖函数 相当于定时器
    //注意写法   每次input触发150ms后才会执行查询  优化性能
    input: _.debounce(async function() {
      //接口需要的参数 城市 input值 因为第三方服务的限制 也就是城市参数，当前城市在
      //store中为西安市 但是这个接口的city只能是 西安  所以我们要在store中拿到city删掉市就好了
      console.log(this)
      //这里不能使用箭头函数，如果使用了箭头函数那么this就指向了 debounce中了
      //拿到的是undefined    切记debounce中不要使用箭头函数
      let self = this
      let {
        status,
        data: { top }
      } = await self.$axios.get('/search/top', {
        params: {
          input: this.search,
          city: '西安'
        }
      })
      this.searchList = []
      this.searchList = top
    }, 150)
  }
}
</script>

<style lang="css">
</style>
